/*******************************************************************************
 * relationalcloud.com
 *  
 *  Project Info:  http://relationalcloud.com
 *  Project Members:  	Carlo Curino <carlo.curino@gmail.com>
 * 				Evan Jones <ej@evanjones.ca>
 *  				Yang Zhang <yaaang@gmail.com> 
 * 				Sam Madden <madden@csail.mit.edu>
 *  This library is free software; you can redistribute it and/or modify it under the terms
 *  of the GNU General Public License as published by the Free Software Foundation;
 *  either version 3.0 of the License, or (at your option) any later version.
 * 
 *  This library is distributed in the hope that it will be useful, but WITHOUT ANY 
 *  WARRANTY;  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 *  PARTICULAR PURPOSE.  See the GNU General Public License for more details.
 ******************************************************************************/
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: mysqlengine/jdbc.proto

package com.relationalcloud.backend;

public final class Jdbc {
  private Jdbc() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
  }
  public enum ErrorCode
      implements com.google.protobuf.ProtocolMessageEnum {
    DEADLOCK(0, 1213),
    LOCK_WAIT_TIMEOUT(1, 1205),
    ;
    
    
    public final int getNumber() { return value; }
    
    public static ErrorCode valueOf(int value) {
      switch (value) {
        case 1213: return DEADLOCK;
        case 1205: return LOCK_WAIT_TIMEOUT;
        default: return null;
      }
    }
    
    public static com.google.protobuf.Internal.EnumLiteMap<ErrorCode>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static com.google.protobuf.Internal.EnumLiteMap<ErrorCode>
        internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<ErrorCode>() {
            public ErrorCode findValueByNumber(int number) {
              return ErrorCode.valueOf(number)
    ;        }
          };
    
    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      return getDescriptor().getValues().get(index);
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.getDescriptor().getEnumTypes().get(0);
    }
    
    private static final ErrorCode[] VALUES = {
      DEADLOCK, LOCK_WAIT_TIMEOUT, 
    };
    public static ErrorCode valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      return VALUES[desc.getIndex()];
    }
    private final int index;
    private final int value;
    private ErrorCode(int index, int value) {
      this.index = index;
      this.value = value;
    }
    
    static {
      com.relationalcloud.backend.Jdbc.getDescriptor();
    }
    
    // @@protoc_insertion_point(enum_scope:mysqlengine.ErrorCode)
  }
  
  public static final class SQLBatch extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLBatch.newBuilder() to construct.
    private SQLBatch() {
      initFields();
    }
    private SQLBatch(boolean noInit) {}
    
    private static final SQLBatch defaultInstance;
    public static SQLBatch getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLBatch getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLBatch_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLBatch_fieldAccessorTable;
    }
    
    // repeated .mysqlengine.Statement statement = 1;
    public static final int STATEMENT_FIELD_NUMBER = 1;
    private java.util.List<com.relationalcloud.backend.Jdbc.Statement> statement_ =
      java.util.Collections.emptyList();
    public java.util.List<com.relationalcloud.backend.Jdbc.Statement> getStatementList() {
      return statement_;
    }
    public int getStatementCount() { return statement_.size(); }
    public com.relationalcloud.backend.Jdbc.Statement getStatement(int index) {
      return statement_.get(index);
    }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      for (com.relationalcloud.backend.Jdbc.Statement element : getStatementList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (com.relationalcloud.backend.Jdbc.Statement element : getStatementList()) {
        output.writeMessage(1, element);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.relationalcloud.backend.Jdbc.Statement element : getStatementList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, element);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatch parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLBatch prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLBatch result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLBatch.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLBatch();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLBatch internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLBatch();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLBatch.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLBatch getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLBatch.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLBatch build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLBatch buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLBatch buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.statement_ != java.util.Collections.EMPTY_LIST) {
          result.statement_ =
            java.util.Collections.unmodifiableList(result.statement_);
        }
        com.relationalcloud.backend.Jdbc.SQLBatch returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLBatch) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLBatch)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLBatch other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLBatch.getDefaultInstance()) return this;
        if (!other.statement_.isEmpty()) {
          if (result.statement_.isEmpty()) {
            result.statement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement>();
          }
          result.statement_.addAll(other.statement_);
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              com.relationalcloud.backend.Jdbc.Statement.Builder subBuilder = com.relationalcloud.backend.Jdbc.Statement.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addStatement(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .mysqlengine.Statement statement = 1;
      public java.util.List<com.relationalcloud.backend.Jdbc.Statement> getStatementList() {
        return java.util.Collections.unmodifiableList(result.statement_);
      }
      public int getStatementCount() {
        return result.getStatementCount();
      }
      public com.relationalcloud.backend.Jdbc.Statement getStatement(int index) {
        return result.getStatement(index);
      }
      public Builder setStatement(int index, com.relationalcloud.backend.Jdbc.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.statement_.set(index, value);
        return this;
      }
      public Builder setStatement(int index, com.relationalcloud.backend.Jdbc.Statement.Builder builderForValue) {
        result.statement_.set(index, builderForValue.build());
        return this;
      }
      public Builder addStatement(com.relationalcloud.backend.Jdbc.Statement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.statement_.isEmpty()) {
          result.statement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement>();
        }
        result.statement_.add(value);
        return this;
      }
      public Builder addStatement(com.relationalcloud.backend.Jdbc.Statement.Builder builderForValue) {
        if (result.statement_.isEmpty()) {
          result.statement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement>();
        }
        result.statement_.add(builderForValue.build());
        return this;
      }
      public Builder addAllStatement(
          java.lang.Iterable<? extends com.relationalcloud.backend.Jdbc.Statement> values) {
        if (result.statement_.isEmpty()) {
          result.statement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement>();
        }
        super.addAll(values, result.statement_);
        return this;
      }
      public Builder clearStatement() {
        result.statement_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLBatch)
    }
    
    static {
      defaultInstance = new SQLBatch(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLBatch)
  }
  
  public static final class SQLTransactionFragment extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLTransactionFragment.newBuilder() to construct.
    private SQLTransactionFragment() {
      initFields();
    }
    private SQLTransactionFragment(boolean noInit) {}
    
    private static final SQLTransactionFragment defaultInstance;
    public static SQLTransactionFragment getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLTransactionFragment getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLTransactionFragment_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLTransactionFragment_fieldAccessorTable;
    }
    
    // required int32 transaction_id = 1;
    public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
    private boolean hasTransactionId;
    private int transactionId_ = 0;
    public boolean hasTransactionId() { return hasTransactionId; }
    public int getTransactionId() { return transactionId_; }
    
    // optional bool auto_commit = 2 [default = false];
    public static final int AUTO_COMMIT_FIELD_NUMBER = 2;
    private boolean hasAutoCommit;
    private boolean autoCommit_ = false;
    public boolean hasAutoCommit() { return hasAutoCommit; }
    public boolean getAutoCommit() { return autoCommit_; }
    
    // optional string database_name = 3;
    public static final int DATABASE_NAME_FIELD_NUMBER = 3;
    private boolean hasDatabaseName;
    private java.lang.String databaseName_ = "";
    public boolean hasDatabaseName() { return hasDatabaseName; }
    public java.lang.String getDatabaseName() { return databaseName_; }
    
    // required .mysqlengine.SQLBatch batch = 4;
    public static final int BATCH_FIELD_NUMBER = 4;
    private boolean hasBatch;
    private com.relationalcloud.backend.Jdbc.SQLBatch batch_;
    public boolean hasBatch() { return hasBatch; }
    public com.relationalcloud.backend.Jdbc.SQLBatch getBatch() { return batch_; }
    
    private void initFields() {
      batch_ = com.relationalcloud.backend.Jdbc.SQLBatch.getDefaultInstance();
    }
    public final boolean isInitialized() {
      if (!hasTransactionId) return false;
      if (!hasBatch) return false;
      if (!getBatch().isInitialized()) return false;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasTransactionId()) {
        output.writeInt32(1, getTransactionId());
      }
      if (hasAutoCommit()) {
        output.writeBool(2, getAutoCommit());
      }
      if (hasDatabaseName()) {
        output.writeString(3, getDatabaseName());
      }
      if (hasBatch()) {
        output.writeMessage(4, getBatch());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasTransactionId()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, getTransactionId());
      }
      if (hasAutoCommit()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, getAutoCommit());
      }
      if (hasDatabaseName()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(3, getDatabaseName());
      }
      if (hasBatch()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getBatch());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLTransactionFragment parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLTransactionFragment prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLTransactionFragment result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLTransactionFragment.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLTransactionFragment();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLTransactionFragment internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLTransactionFragment();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLTransactionFragment.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLTransactionFragment getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLTransactionFragment.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLTransactionFragment build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLTransactionFragment buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLTransactionFragment buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.relationalcloud.backend.Jdbc.SQLTransactionFragment returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLTransactionFragment) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLTransactionFragment)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLTransactionFragment other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLTransactionFragment.getDefaultInstance()) return this;
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        if (other.hasAutoCommit()) {
          setAutoCommit(other.getAutoCommit());
        }
        if (other.hasDatabaseName()) {
          setDatabaseName(other.getDatabaseName());
        }
        if (other.hasBatch()) {
          mergeBatch(other.getBatch());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 8: {
              setTransactionId(input.readInt32());
              break;
            }
            case 16: {
              setAutoCommit(input.readBool());
              break;
            }
            case 26: {
              setDatabaseName(input.readString());
              break;
            }
            case 34: {
              com.relationalcloud.backend.Jdbc.SQLBatch.Builder subBuilder = com.relationalcloud.backend.Jdbc.SQLBatch.newBuilder();
              if (hasBatch()) {
                subBuilder.mergeFrom(getBatch());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setBatch(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // required int32 transaction_id = 1;
      public boolean hasTransactionId() {
        return result.hasTransactionId();
      }
      public int getTransactionId() {
        return result.getTransactionId();
      }
      public Builder setTransactionId(int value) {
        result.hasTransactionId = true;
        result.transactionId_ = value;
        return this;
      }
      public Builder clearTransactionId() {
        result.hasTransactionId = false;
        result.transactionId_ = 0;
        return this;
      }
      
      // optional bool auto_commit = 2 [default = false];
      public boolean hasAutoCommit() {
        return result.hasAutoCommit();
      }
      public boolean getAutoCommit() {
        return result.getAutoCommit();
      }
      public Builder setAutoCommit(boolean value) {
        result.hasAutoCommit = true;
        result.autoCommit_ = value;
        return this;
      }
      public Builder clearAutoCommit() {
        result.hasAutoCommit = false;
        result.autoCommit_ = false;
        return this;
      }
      
      // optional string database_name = 3;
      public boolean hasDatabaseName() {
        return result.hasDatabaseName();
      }
      public java.lang.String getDatabaseName() {
        return result.getDatabaseName();
      }
      public Builder setDatabaseName(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasDatabaseName = true;
        result.databaseName_ = value;
        return this;
      }
      public Builder clearDatabaseName() {
        result.hasDatabaseName = false;
        result.databaseName_ = getDefaultInstance().getDatabaseName();
        return this;
      }
      
      // required .mysqlengine.SQLBatch batch = 4;
      public boolean hasBatch() {
        return result.hasBatch();
      }
      public com.relationalcloud.backend.Jdbc.SQLBatch getBatch() {
        return result.getBatch();
      }
      public Builder setBatch(com.relationalcloud.backend.Jdbc.SQLBatch value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.hasBatch = true;
        result.batch_ = value;
        return this;
      }
      public Builder setBatch(com.relationalcloud.backend.Jdbc.SQLBatch.Builder builderForValue) {
        result.hasBatch = true;
        result.batch_ = builderForValue.build();
        return this;
      }
      public Builder mergeBatch(com.relationalcloud.backend.Jdbc.SQLBatch value) {
        if (result.hasBatch() &&
            result.batch_ != com.relationalcloud.backend.Jdbc.SQLBatch.getDefaultInstance()) {
          result.batch_ =
            com.relationalcloud.backend.Jdbc.SQLBatch.newBuilder(result.batch_).mergeFrom(value).buildPartial();
        } else {
          result.batch_ = value;
        }
        result.hasBatch = true;
        return this;
      }
      public Builder clearBatch() {
        result.hasBatch = false;
        result.batch_ = com.relationalcloud.backend.Jdbc.SQLBatch.getDefaultInstance();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLTransactionFragment)
    }
    
    static {
      defaultInstance = new SQLTransactionFragment(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLTransactionFragment)
  }
  
  public static final class SQLBatchResults extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLBatchResults.newBuilder() to construct.
    private SQLBatchResults() {
      initFields();
    }
    private SQLBatchResults(boolean noInit) {}
    
    private static final SQLBatchResults defaultInstance;
    public static SQLBatchResults getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLBatchResults getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLBatchResults_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLBatchResults_fieldAccessorTable;
    }
    
    // repeated .mysqlengine.SQLResultSet result = 1;
    public static final int RESULT_FIELD_NUMBER = 1;
    private java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet> result_ =
      java.util.Collections.emptyList();
    public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet> getResultList() {
      return result_;
    }
    public int getResultCount() { return result_.size(); }
    public com.relationalcloud.backend.Jdbc.SQLResultSet getResult(int index) {
      return result_.get(index);
    }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      for (com.relationalcloud.backend.Jdbc.SQLResultSet element : getResultList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (com.relationalcloud.backend.Jdbc.SQLResultSet element : getResultList()) {
        output.writeMessage(1, element);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.relationalcloud.backend.Jdbc.SQLResultSet element : getResultList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, element);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLBatchResults parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLBatchResults prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLBatchResults result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLBatchResults.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLBatchResults();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLBatchResults internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLBatchResults();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLBatchResults.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLBatchResults getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLBatchResults build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLBatchResults buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLBatchResults buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.result_ != java.util.Collections.EMPTY_LIST) {
          result.result_ =
            java.util.Collections.unmodifiableList(result.result_);
        }
        com.relationalcloud.backend.Jdbc.SQLBatchResults returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLBatchResults) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLBatchResults)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLBatchResults other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance()) return this;
        if (!other.result_.isEmpty()) {
          if (result.result_.isEmpty()) {
            result.result_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet>();
          }
          result.result_.addAll(other.result_);
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              com.relationalcloud.backend.Jdbc.SQLResultSet.Builder subBuilder = com.relationalcloud.backend.Jdbc.SQLResultSet.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addResult(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // repeated .mysqlengine.SQLResultSet result = 1;
      public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet> getResultList() {
        return java.util.Collections.unmodifiableList(result.result_);
      }
      public int getResultCount() {
        return result.getResultCount();
      }
      public com.relationalcloud.backend.Jdbc.SQLResultSet getResult(int index) {
        return result.getResult(index);
      }
      public Builder setResult(int index, com.relationalcloud.backend.Jdbc.SQLResultSet value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.result_.set(index, value);
        return this;
      }
      public Builder setResult(int index, com.relationalcloud.backend.Jdbc.SQLResultSet.Builder builderForValue) {
        result.result_.set(index, builderForValue.build());
        return this;
      }
      public Builder addResult(com.relationalcloud.backend.Jdbc.SQLResultSet value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.result_.isEmpty()) {
          result.result_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet>();
        }
        result.result_.add(value);
        return this;
      }
      public Builder addResult(com.relationalcloud.backend.Jdbc.SQLResultSet.Builder builderForValue) {
        if (result.result_.isEmpty()) {
          result.result_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet>();
        }
        result.result_.add(builderForValue.build());
        return this;
      }
      public Builder addAllResult(
          java.lang.Iterable<? extends com.relationalcloud.backend.Jdbc.SQLResultSet> values) {
        if (result.result_.isEmpty()) {
          result.result_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet>();
        }
        super.addAll(values, result.result_);
        return this;
      }
      public Builder clearResult() {
        result.result_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLBatchResults)
    }
    
    static {
      defaultInstance = new SQLBatchResults(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLBatchResults)
  }
  
  public static final class Statement extends
      com.google.protobuf.GeneratedMessage {
    // Use Statement.newBuilder() to construct.
    private Statement() {
      initFields();
    }
    private Statement(boolean noInit) {}
    
    private static final Statement defaultInstance;
    public static Statement getDefaultInstance() {
      return defaultInstance;
    }
    
    public Statement getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Statement_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Statement_fieldAccessorTable;
    }
    
    public static final class MigrateStatement extends
        com.google.protobuf.GeneratedMessage {
      // Use MigrateStatement.newBuilder() to construct.
      private MigrateStatement() {
        initFields();
      }
      private MigrateStatement(boolean noInit) {}
      
      private static final MigrateStatement defaultInstance;
      public static MigrateStatement getDefaultInstance() {
        return defaultInstance;
      }
      
      public MigrateStatement getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Statement_MigrateStatement_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Statement_MigrateStatement_fieldAccessorTable;
      }
      
      // required string import_sql = 1;
      public static final int IMPORT_SQL_FIELD_NUMBER = 1;
      private boolean hasImportSql;
      private java.lang.String importSql_ = "";
      public boolean hasImportSql() { return hasImportSql; }
      public java.lang.String getImportSql() { return importSql_; }
      
      // required string destination_table = 2;
      public static final int DESTINATION_TABLE_FIELD_NUMBER = 2;
      private boolean hasDestinationTable;
      private java.lang.String destinationTable_ = "";
      public boolean hasDestinationTable() { return hasDestinationTable; }
      public java.lang.String getDestinationTable() { return destinationTable_; }
      
      private void initFields() {
      }
      public final boolean isInitialized() {
        if (!hasImportSql) return false;
        if (!hasDestinationTable) return false;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (hasImportSql()) {
          output.writeString(1, getImportSql());
        }
        if (hasDestinationTable()) {
          output.writeString(2, getDestinationTable());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (hasImportSql()) {
          size += com.google.protobuf.CodedOutputStream
            .computeStringSize(1, getImportSql());
        }
        if (hasDestinationTable()) {
          size += com.google.protobuf.CodedOutputStream
            .computeStringSize(2, getDestinationTable());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.Statement.MigrateStatement parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.relationalcloud.backend.Jdbc.Statement.MigrateStatement prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        private com.relationalcloud.backend.Jdbc.Statement.MigrateStatement result;
        
        // Construct using com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.newBuilder()
        private Builder() {}
        
        private static Builder create() {
          Builder builder = new Builder();
          builder.result = new com.relationalcloud.backend.Jdbc.Statement.MigrateStatement();
          return builder;
        }
        
        protected com.relationalcloud.backend.Jdbc.Statement.MigrateStatement internalGetResult() {
          return result;
        }
        
        public Builder clear() {
          if (result == null) {
            throw new IllegalStateException(
              "Cannot call clear() after build().");
          }
          result = new com.relationalcloud.backend.Jdbc.Statement.MigrateStatement();
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(result);
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.getDescriptor();
        }
        
        public com.relationalcloud.backend.Jdbc.Statement.MigrateStatement getDefaultInstanceForType() {
          return com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.getDefaultInstance();
        }
        
        public boolean isInitialized() {
          return result.isInitialized();
        }
        public com.relationalcloud.backend.Jdbc.Statement.MigrateStatement build() {
          if (result != null && !isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return buildPartial();
        }
        
        private com.relationalcloud.backend.Jdbc.Statement.MigrateStatement buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        public com.relationalcloud.backend.Jdbc.Statement.MigrateStatement buildPartial() {
          if (result == null) {
            throw new IllegalStateException(
              "build() has already been called on this Builder.");
          }
          com.relationalcloud.backend.Jdbc.Statement.MigrateStatement returnMe = result;
          result = null;
          return returnMe;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.relationalcloud.backend.Jdbc.Statement.MigrateStatement) {
            return mergeFrom((com.relationalcloud.backend.Jdbc.Statement.MigrateStatement)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.relationalcloud.backend.Jdbc.Statement.MigrateStatement other) {
          if (other == com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.getDefaultInstance()) return this;
          if (other.hasImportSql()) {
            setImportSql(other.getImportSql());
          }
          if (other.hasDestinationTable()) {
            setDestinationTable(other.getDestinationTable());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  return this;
                }
                break;
              }
              case 10: {
                setImportSql(input.readString());
                break;
              }
              case 18: {
                setDestinationTable(input.readString());
                break;
              }
            }
          }
        }
        
        
        // required string import_sql = 1;
        public boolean hasImportSql() {
          return result.hasImportSql();
        }
        public java.lang.String getImportSql() {
          return result.getImportSql();
        }
        public Builder setImportSql(java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  result.hasImportSql = true;
          result.importSql_ = value;
          return this;
        }
        public Builder clearImportSql() {
          result.hasImportSql = false;
          result.importSql_ = getDefaultInstance().getImportSql();
          return this;
        }
        
        // required string destination_table = 2;
        public boolean hasDestinationTable() {
          return result.hasDestinationTable();
        }
        public java.lang.String getDestinationTable() {
          return result.getDestinationTable();
        }
        public Builder setDestinationTable(java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  result.hasDestinationTable = true;
          result.destinationTable_ = value;
          return this;
        }
        public Builder clearDestinationTable() {
          result.hasDestinationTable = false;
          result.destinationTable_ = getDefaultInstance().getDestinationTable();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:mysqlengine.Statement.MigrateStatement)
      }
      
      static {
        defaultInstance = new MigrateStatement(true);
        com.relationalcloud.backend.Jdbc.internalForceInit();
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:mysqlengine.Statement.MigrateStatement)
    }
    
    // required string sql = 1;
    public static final int SQL_FIELD_NUMBER = 1;
    private boolean hasSql;
    private java.lang.String sql_ = "";
    public boolean hasSql() { return hasSql; }
    public java.lang.String getSql() { return sql_; }
    
    // repeated .mysqlengine.Statement.MigrateStatement migrate_statement = 2;
    public static final int MIGRATE_STATEMENT_FIELD_NUMBER = 2;
    private java.util.List<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement> migrateStatement_ =
      java.util.Collections.emptyList();
    public java.util.List<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement> getMigrateStatementList() {
      return migrateStatement_;
    }
    public int getMigrateStatementCount() { return migrateStatement_.size(); }
    public com.relationalcloud.backend.Jdbc.Statement.MigrateStatement getMigrateStatement(int index) {
      return migrateStatement_.get(index);
    }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      if (!hasSql) return false;
      for (com.relationalcloud.backend.Jdbc.Statement.MigrateStatement element : getMigrateStatementList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasSql()) {
        output.writeString(1, getSql());
      }
      for (com.relationalcloud.backend.Jdbc.Statement.MigrateStatement element : getMigrateStatementList()) {
        output.writeMessage(2, element);
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasSql()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(1, getSql());
      }
      for (com.relationalcloud.backend.Jdbc.Statement.MigrateStatement element : getMigrateStatementList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Statement parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.Statement prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.Statement result;
      
      // Construct using com.relationalcloud.backend.Jdbc.Statement.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.Statement();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.Statement internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.Statement();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.Statement.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.Statement getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.Statement.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.Statement build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.Statement buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.Statement buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.migrateStatement_ != java.util.Collections.EMPTY_LIST) {
          result.migrateStatement_ =
            java.util.Collections.unmodifiableList(result.migrateStatement_);
        }
        com.relationalcloud.backend.Jdbc.Statement returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.Statement) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.Statement)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.Statement other) {
        if (other == com.relationalcloud.backend.Jdbc.Statement.getDefaultInstance()) return this;
        if (other.hasSql()) {
          setSql(other.getSql());
        }
        if (!other.migrateStatement_.isEmpty()) {
          if (result.migrateStatement_.isEmpty()) {
            result.migrateStatement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement>();
          }
          result.migrateStatement_.addAll(other.migrateStatement_);
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              setSql(input.readString());
              break;
            }
            case 18: {
              com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.Builder subBuilder = com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addMigrateStatement(subBuilder.buildPartial());
              break;
            }
          }
        }
      }
      
      
      // required string sql = 1;
      public boolean hasSql() {
        return result.hasSql();
      }
      public java.lang.String getSql() {
        return result.getSql();
      }
      public Builder setSql(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasSql = true;
        result.sql_ = value;
        return this;
      }
      public Builder clearSql() {
        result.hasSql = false;
        result.sql_ = getDefaultInstance().getSql();
        return this;
      }
      
      // repeated .mysqlengine.Statement.MigrateStatement migrate_statement = 2;
      public java.util.List<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement> getMigrateStatementList() {
        return java.util.Collections.unmodifiableList(result.migrateStatement_);
      }
      public int getMigrateStatementCount() {
        return result.getMigrateStatementCount();
      }
      public com.relationalcloud.backend.Jdbc.Statement.MigrateStatement getMigrateStatement(int index) {
        return result.getMigrateStatement(index);
      }
      public Builder setMigrateStatement(int index, com.relationalcloud.backend.Jdbc.Statement.MigrateStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.migrateStatement_.set(index, value);
        return this;
      }
      public Builder setMigrateStatement(int index, com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.Builder builderForValue) {
        result.migrateStatement_.set(index, builderForValue.build());
        return this;
      }
      public Builder addMigrateStatement(com.relationalcloud.backend.Jdbc.Statement.MigrateStatement value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.migrateStatement_.isEmpty()) {
          result.migrateStatement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement>();
        }
        result.migrateStatement_.add(value);
        return this;
      }
      public Builder addMigrateStatement(com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.Builder builderForValue) {
        if (result.migrateStatement_.isEmpty()) {
          result.migrateStatement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement>();
        }
        result.migrateStatement_.add(builderForValue.build());
        return this;
      }
      public Builder addAllMigrateStatement(
          java.lang.Iterable<? extends com.relationalcloud.backend.Jdbc.Statement.MigrateStatement> values) {
        if (result.migrateStatement_.isEmpty()) {
          result.migrateStatement_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.Statement.MigrateStatement>();
        }
        super.addAll(values, result.migrateStatement_);
        return this;
      }
      public Builder clearMigrateStatement() {
        result.migrateStatement_ = java.util.Collections.emptyList();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.Statement)
    }
    
    static {
      defaultInstance = new Statement(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.Statement)
  }
  
  public static final class Argument extends
      com.google.protobuf.GeneratedMessage {
    // Use Argument.newBuilder() to construct.
    private Argument() {
      initFields();
    }
    private Argument(boolean noInit) {}
    
    private static final Argument defaultInstance;
    public static Argument getDefaultInstance() {
      return defaultInstance;
    }
    
    public Argument getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Argument_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_Argument_fieldAccessorTable;
    }
    
    // required int32 type = 1;
    public static final int TYPE_FIELD_NUMBER = 1;
    private boolean hasType;
    private int type_ = 0;
    public boolean hasType() { return hasType; }
    public int getType() { return type_; }
    
    // optional int32 int32Val = 2;
    public static final int INT32VAL_FIELD_NUMBER = 2;
    private boolean hasInt32Val;
    private int int32Val_ = 0;
    public boolean hasInt32Val() { return hasInt32Val; }
    public int getInt32Val() { return int32Val_; }
    
    // optional int64 int64Val = 3;
    public static final int INT64VAL_FIELD_NUMBER = 3;
    private boolean hasInt64Val;
    private long int64Val_ = 0L;
    public boolean hasInt64Val() { return hasInt64Val; }
    public long getInt64Val() { return int64Val_; }
    
    // optional float floatVal = 4;
    public static final int FLOATVAL_FIELD_NUMBER = 4;
    private boolean hasFloatVal;
    private float floatVal_ = 0F;
    public boolean hasFloatVal() { return hasFloatVal; }
    public float getFloatVal() { return floatVal_; }
    
    // optional double doubleVal = 5;
    public static final int DOUBLEVAL_FIELD_NUMBER = 5;
    private boolean hasDoubleVal;
    private double doubleVal_ = 0D;
    public boolean hasDoubleVal() { return hasDoubleVal; }
    public double getDoubleVal() { return doubleVal_; }
    
    // optional string stringVal = 6;
    public static final int STRINGVAL_FIELD_NUMBER = 6;
    private boolean hasStringVal;
    private java.lang.String stringVal_ = "";
    public boolean hasStringVal() { return hasStringVal; }
    public java.lang.String getStringVal() { return stringVal_; }
    
    // optional bytes bytesVal = 7;
    public static final int BYTESVAL_FIELD_NUMBER = 7;
    private boolean hasBytesVal;
    private com.google.protobuf.ByteString bytesVal_ = com.google.protobuf.ByteString.EMPTY;
    public boolean hasBytesVal() { return hasBytesVal; }
    public com.google.protobuf.ByteString getBytesVal() { return bytesVal_; }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      if (!hasType) return false;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasType()) {
        output.writeInt32(1, getType());
      }
      if (hasInt32Val()) {
        output.writeInt32(2, getInt32Val());
      }
      if (hasInt64Val()) {
        output.writeInt64(3, getInt64Val());
      }
      if (hasFloatVal()) {
        output.writeFloat(4, getFloatVal());
      }
      if (hasDoubleVal()) {
        output.writeDouble(5, getDoubleVal());
      }
      if (hasStringVal()) {
        output.writeString(6, getStringVal());
      }
      if (hasBytesVal()) {
        output.writeBytes(7, getBytesVal());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasType()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, getType());
      }
      if (hasInt32Val()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, getInt32Val());
      }
      if (hasInt64Val()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, getInt64Val());
      }
      if (hasFloatVal()) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(4, getFloatVal());
      }
      if (hasDoubleVal()) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(5, getDoubleVal());
      }
      if (hasStringVal()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(6, getStringVal());
      }
      if (hasBytesVal()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, getBytesVal());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.Argument parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.Argument prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.Argument result;
      
      // Construct using com.relationalcloud.backend.Jdbc.Argument.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.Argument();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.Argument internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.Argument();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.Argument.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.Argument getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.Argument.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.Argument build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.Argument buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.Argument buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.relationalcloud.backend.Jdbc.Argument returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.Argument) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.Argument)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.Argument other) {
        if (other == com.relationalcloud.backend.Jdbc.Argument.getDefaultInstance()) return this;
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasInt32Val()) {
          setInt32Val(other.getInt32Val());
        }
        if (other.hasInt64Val()) {
          setInt64Val(other.getInt64Val());
        }
        if (other.hasFloatVal()) {
          setFloatVal(other.getFloatVal());
        }
        if (other.hasDoubleVal()) {
          setDoubleVal(other.getDoubleVal());
        }
        if (other.hasStringVal()) {
          setStringVal(other.getStringVal());
        }
        if (other.hasBytesVal()) {
          setBytesVal(other.getBytesVal());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 8: {
              setType(input.readInt32());
              break;
            }
            case 16: {
              setInt32Val(input.readInt32());
              break;
            }
            case 24: {
              setInt64Val(input.readInt64());
              break;
            }
            case 37: {
              setFloatVal(input.readFloat());
              break;
            }
            case 41: {
              setDoubleVal(input.readDouble());
              break;
            }
            case 50: {
              setStringVal(input.readString());
              break;
            }
            case 58: {
              setBytesVal(input.readBytes());
              break;
            }
          }
        }
      }
      
      
      // required int32 type = 1;
      public boolean hasType() {
        return result.hasType();
      }
      public int getType() {
        return result.getType();
      }
      public Builder setType(int value) {
        result.hasType = true;
        result.type_ = value;
        return this;
      }
      public Builder clearType() {
        result.hasType = false;
        result.type_ = 0;
        return this;
      }
      
      // optional int32 int32Val = 2;
      public boolean hasInt32Val() {
        return result.hasInt32Val();
      }
      public int getInt32Val() {
        return result.getInt32Val();
      }
      public Builder setInt32Val(int value) {
        result.hasInt32Val = true;
        result.int32Val_ = value;
        return this;
      }
      public Builder clearInt32Val() {
        result.hasInt32Val = false;
        result.int32Val_ = 0;
        return this;
      }
      
      // optional int64 int64Val = 3;
      public boolean hasInt64Val() {
        return result.hasInt64Val();
      }
      public long getInt64Val() {
        return result.getInt64Val();
      }
      public Builder setInt64Val(long value) {
        result.hasInt64Val = true;
        result.int64Val_ = value;
        return this;
      }
      public Builder clearInt64Val() {
        result.hasInt64Val = false;
        result.int64Val_ = 0L;
        return this;
      }
      
      // optional float floatVal = 4;
      public boolean hasFloatVal() {
        return result.hasFloatVal();
      }
      public float getFloatVal() {
        return result.getFloatVal();
      }
      public Builder setFloatVal(float value) {
        result.hasFloatVal = true;
        result.floatVal_ = value;
        return this;
      }
      public Builder clearFloatVal() {
        result.hasFloatVal = false;
        result.floatVal_ = 0F;
        return this;
      }
      
      // optional double doubleVal = 5;
      public boolean hasDoubleVal() {
        return result.hasDoubleVal();
      }
      public double getDoubleVal() {
        return result.getDoubleVal();
      }
      public Builder setDoubleVal(double value) {
        result.hasDoubleVal = true;
        result.doubleVal_ = value;
        return this;
      }
      public Builder clearDoubleVal() {
        result.hasDoubleVal = false;
        result.doubleVal_ = 0D;
        return this;
      }
      
      // optional string stringVal = 6;
      public boolean hasStringVal() {
        return result.hasStringVal();
      }
      public java.lang.String getStringVal() {
        return result.getStringVal();
      }
      public Builder setStringVal(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasStringVal = true;
        result.stringVal_ = value;
        return this;
      }
      public Builder clearStringVal() {
        result.hasStringVal = false;
        result.stringVal_ = getDefaultInstance().getStringVal();
        return this;
      }
      
      // optional bytes bytesVal = 7;
      public boolean hasBytesVal() {
        return result.hasBytesVal();
      }
      public com.google.protobuf.ByteString getBytesVal() {
        return result.getBytesVal();
      }
      public Builder setBytesVal(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasBytesVal = true;
        result.bytesVal_ = value;
        return this;
      }
      public Builder clearBytesVal() {
        result.hasBytesVal = false;
        result.bytesVal_ = getDefaultInstance().getBytesVal();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.Argument)
    }
    
    static {
      defaultInstance = new Argument(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.Argument)
  }
  
  public static final class SQLResultSet extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLResultSet.newBuilder() to construct.
    private SQLResultSet() {
      initFields();
    }
    private SQLResultSet(boolean noInit) {}
    
    private static final SQLResultSet defaultInstance;
    public static SQLResultSet getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLResultSet getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_fieldAccessorTable;
    }
    
    public enum Type
        implements com.google.protobuf.ProtocolMessageEnum {
      INTEGER(0, 0),
      STRING(1, 1),
      ;
      
      
      public final int getNumber() { return value; }
      
      public static Type valueOf(int value) {
        switch (value) {
          case 0: return INTEGER;
          case 1: return STRING;
          default: return null;
        }
      }
      
      public static com.google.protobuf.Internal.EnumLiteMap<Type>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static com.google.protobuf.Internal.EnumLiteMap<Type>
          internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Type>() {
              public Type findValueByNumber(int number) {
                return Type.valueOf(number)
      ;        }
            };
      
      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(index);
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.relationalcloud.backend.Jdbc.SQLResultSet.getDescriptor().getEnumTypes().get(0);
      }
      
      private static final Type[] VALUES = {
        INTEGER, STRING, 
      };
      public static Type valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        return VALUES[desc.getIndex()];
      }
      private final int index;
      private final int value;
      private Type(int index, int value) {
        this.index = index;
        this.value = value;
      }
      
      static {
        com.relationalcloud.backend.Jdbc.getDescriptor();
      }
      
      // @@protoc_insertion_point(enum_scope:mysqlengine.SQLResultSet.Type)
    }
    
    public static final class Column extends
        com.google.protobuf.GeneratedMessage {
      // Use Column.newBuilder() to construct.
      private Column() {
        initFields();
      }
      private Column(boolean noInit) {}
      
      private static final Column defaultInstance;
      public static Column getDefaultInstance() {
        return defaultInstance;
      }
      
      public Column getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_Column_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_Column_fieldAccessorTable;
      }
      
      // required string query_name = 1;
      public static final int QUERY_NAME_FIELD_NUMBER = 1;
      private boolean hasQueryName;
      private java.lang.String queryName_ = "";
      public boolean hasQueryName() { return hasQueryName; }
      public java.lang.String getQueryName() { return queryName_; }
      
      // required .mysqlengine.SQLResultSet.Type type = 2;
      public static final int TYPE_FIELD_NUMBER = 2;
      private boolean hasType;
      private com.relationalcloud.backend.Jdbc.SQLResultSet.Type type_;
      public boolean hasType() { return hasType; }
      public com.relationalcloud.backend.Jdbc.SQLResultSet.Type getType() { return type_; }
      
      private void initFields() {
        type_ = com.relationalcloud.backend.Jdbc.SQLResultSet.Type.INTEGER;
      }
      public final boolean isInitialized() {
        if (!hasQueryName) return false;
        if (!hasType) return false;
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        if (hasQueryName()) {
          output.writeString(1, getQueryName());
        }
        if (hasType()) {
          output.writeEnum(2, getType().getNumber());
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        if (hasQueryName()) {
          size += com.google.protobuf.CodedOutputStream
            .computeStringSize(1, getQueryName());
        }
        if (hasType()) {
          size += com.google.protobuf.CodedOutputStream
            .computeEnumSize(2, getType().getNumber());
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Column parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLResultSet.Column prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        private com.relationalcloud.backend.Jdbc.SQLResultSet.Column result;
        
        // Construct using com.relationalcloud.backend.Jdbc.SQLResultSet.Column.newBuilder()
        private Builder() {}
        
        private static Builder create() {
          Builder builder = new Builder();
          builder.result = new com.relationalcloud.backend.Jdbc.SQLResultSet.Column();
          return builder;
        }
        
        protected com.relationalcloud.backend.Jdbc.SQLResultSet.Column internalGetResult() {
          return result;
        }
        
        public Builder clear() {
          if (result == null) {
            throw new IllegalStateException(
              "Cannot call clear() after build().");
          }
          result = new com.relationalcloud.backend.Jdbc.SQLResultSet.Column();
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(result);
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.relationalcloud.backend.Jdbc.SQLResultSet.Column.getDescriptor();
        }
        
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Column getDefaultInstanceForType() {
          return com.relationalcloud.backend.Jdbc.SQLResultSet.Column.getDefaultInstance();
        }
        
        public boolean isInitialized() {
          return result.isInitialized();
        }
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Column build() {
          if (result != null && !isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return buildPartial();
        }
        
        private com.relationalcloud.backend.Jdbc.SQLResultSet.Column buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Column buildPartial() {
          if (result == null) {
            throw new IllegalStateException(
              "build() has already been called on this Builder.");
          }
          com.relationalcloud.backend.Jdbc.SQLResultSet.Column returnMe = result;
          result = null;
          return returnMe;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.relationalcloud.backend.Jdbc.SQLResultSet.Column) {
            return mergeFrom((com.relationalcloud.backend.Jdbc.SQLResultSet.Column)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLResultSet.Column other) {
          if (other == com.relationalcloud.backend.Jdbc.SQLResultSet.Column.getDefaultInstance()) return this;
          if (other.hasQueryName()) {
            setQueryName(other.getQueryName());
          }
          if (other.hasType()) {
            setType(other.getType());
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  return this;
                }
                break;
              }
              case 10: {
                setQueryName(input.readString());
                break;
              }
              case 16: {
                int rawValue = input.readEnum();
                com.relationalcloud.backend.Jdbc.SQLResultSet.Type value = com.relationalcloud.backend.Jdbc.SQLResultSet.Type.valueOf(rawValue);
                if (value == null) {
                  unknownFields.mergeVarintField(2, rawValue);
                } else {
                  setType(value);
                }
                break;
              }
            }
          }
        }
        
        
        // required string query_name = 1;
        public boolean hasQueryName() {
          return result.hasQueryName();
        }
        public java.lang.String getQueryName() {
          return result.getQueryName();
        }
        public Builder setQueryName(java.lang.String value) {
          if (value == null) {
    throw new NullPointerException();
  }
  result.hasQueryName = true;
          result.queryName_ = value;
          return this;
        }
        public Builder clearQueryName() {
          result.hasQueryName = false;
          result.queryName_ = getDefaultInstance().getQueryName();
          return this;
        }
        
        // required .mysqlengine.SQLResultSet.Type type = 2;
        public boolean hasType() {
          return result.hasType();
        }
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Type getType() {
          return result.getType();
        }
        public Builder setType(com.relationalcloud.backend.Jdbc.SQLResultSet.Type value) {
          if (value == null) {
            throw new NullPointerException();
          }
          result.hasType = true;
          result.type_ = value;
          return this;
        }
        public Builder clearType() {
          result.hasType = false;
          result.type_ = com.relationalcloud.backend.Jdbc.SQLResultSet.Type.INTEGER;
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:mysqlengine.SQLResultSet.Column)
      }
      
      static {
        defaultInstance = new Column(true);
        com.relationalcloud.backend.Jdbc.internalForceInit();
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:mysqlengine.SQLResultSet.Column)
    }
    
    public static final class Row extends
        com.google.protobuf.GeneratedMessage {
      // Use Row.newBuilder() to construct.
      private Row() {
        initFields();
      }
      private Row(boolean noInit) {}
      
      private static final Row defaultInstance;
      public static Row getDefaultInstance() {
        return defaultInstance;
      }
      
      public Row getDefaultInstanceForType() {
        return defaultInstance;
      }
      
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_Row_descriptor;
      }
      
      protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLResultSet_Row_fieldAccessorTable;
      }
      
      // repeated bytes value = 1;
      public static final int VALUE_FIELD_NUMBER = 1;
      private java.util.List<com.google.protobuf.ByteString> value_ =
        java.util.Collections.emptyList();
      public java.util.List<com.google.protobuf.ByteString> getValueList() {
        return value_;
      }
      public int getValueCount() { return value_.size(); }
      public com.google.protobuf.ByteString getValue(int index) {
        return value_.get(index);
      }
      
      // repeated int32 null_column = 2;
      public static final int NULL_COLUMN_FIELD_NUMBER = 2;
      private java.util.List<java.lang.Integer> nullColumn_ =
        java.util.Collections.emptyList();
      public java.util.List<java.lang.Integer> getNullColumnList() {
        return nullColumn_;
      }
      public int getNullColumnCount() { return nullColumn_.size(); }
      public int getNullColumn(int index) {
        return nullColumn_.get(index);
      }
      
      private void initFields() {
      }
      public final boolean isInitialized() {
        return true;
      }
      
      public void writeTo(com.google.protobuf.CodedOutputStream output)
                          throws java.io.IOException {
        getSerializedSize();
        for (com.google.protobuf.ByteString element : getValueList()) {
          output.writeBytes(1, element);
        }
        for (int element : getNullColumnList()) {
          output.writeInt32(2, element);
        }
        getUnknownFields().writeTo(output);
      }
      
      private int memoizedSerializedSize = -1;
      public int getSerializedSize() {
        int size = memoizedSerializedSize;
        if (size != -1) return size;
      
        size = 0;
        {
          int dataSize = 0;
          for (com.google.protobuf.ByteString element : getValueList()) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeBytesSizeNoTag(element);
          }
          size += dataSize;
          size += 1 * getValueList().size();
        }
        {
          int dataSize = 0;
          for (int element : getNullColumnList()) {
            dataSize += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(element);
          }
          size += dataSize;
          size += 1 * getNullColumnList().size();
        }
        size += getUnknownFields().getSerializedSize();
        memoizedSerializedSize = size;
        return size;
      }
      
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return newBuilder().mergeFrom(data, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        Builder builder = newBuilder();
        if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
          return builder.buildParsed();
        } else {
          return null;
        }
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input).buildParsed();
      }
      public static com.relationalcloud.backend.Jdbc.SQLResultSet.Row parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return newBuilder().mergeFrom(input, extensionRegistry)
                 .buildParsed();
      }
      
      public static Builder newBuilder() { return Builder.create(); }
      public Builder newBuilderForType() { return newBuilder(); }
      public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLResultSet.Row prototype) {
        return newBuilder().mergeFrom(prototype);
      }
      public Builder toBuilder() { return newBuilder(this); }
      
      public static final class Builder extends
          com.google.protobuf.GeneratedMessage.Builder<Builder> {
        private com.relationalcloud.backend.Jdbc.SQLResultSet.Row result;
        
        // Construct using com.relationalcloud.backend.Jdbc.SQLResultSet.Row.newBuilder()
        private Builder() {}
        
        private static Builder create() {
          Builder builder = new Builder();
          builder.result = new com.relationalcloud.backend.Jdbc.SQLResultSet.Row();
          return builder;
        }
        
        protected com.relationalcloud.backend.Jdbc.SQLResultSet.Row internalGetResult() {
          return result;
        }
        
        public Builder clear() {
          if (result == null) {
            throw new IllegalStateException(
              "Cannot call clear() after build().");
          }
          result = new com.relationalcloud.backend.Jdbc.SQLResultSet.Row();
          return this;
        }
        
        public Builder clone() {
          return create().mergeFrom(result);
        }
        
        public com.google.protobuf.Descriptors.Descriptor
            getDescriptorForType() {
          return com.relationalcloud.backend.Jdbc.SQLResultSet.Row.getDescriptor();
        }
        
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Row getDefaultInstanceForType() {
          return com.relationalcloud.backend.Jdbc.SQLResultSet.Row.getDefaultInstance();
        }
        
        public boolean isInitialized() {
          return result.isInitialized();
        }
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Row build() {
          if (result != null && !isInitialized()) {
            throw newUninitializedMessageException(result);
          }
          return buildPartial();
        }
        
        private com.relationalcloud.backend.Jdbc.SQLResultSet.Row buildParsed()
            throws com.google.protobuf.InvalidProtocolBufferException {
          if (!isInitialized()) {
            throw newUninitializedMessageException(
              result).asInvalidProtocolBufferException();
          }
          return buildPartial();
        }
        
        public com.relationalcloud.backend.Jdbc.SQLResultSet.Row buildPartial() {
          if (result == null) {
            throw new IllegalStateException(
              "build() has already been called on this Builder.");
          }
          if (result.value_ != java.util.Collections.EMPTY_LIST) {
            result.value_ =
              java.util.Collections.unmodifiableList(result.value_);
          }
          if (result.nullColumn_ != java.util.Collections.EMPTY_LIST) {
            result.nullColumn_ =
              java.util.Collections.unmodifiableList(result.nullColumn_);
          }
          com.relationalcloud.backend.Jdbc.SQLResultSet.Row returnMe = result;
          result = null;
          return returnMe;
        }
        
        public Builder mergeFrom(com.google.protobuf.Message other) {
          if (other instanceof com.relationalcloud.backend.Jdbc.SQLResultSet.Row) {
            return mergeFrom((com.relationalcloud.backend.Jdbc.SQLResultSet.Row)other);
          } else {
            super.mergeFrom(other);
            return this;
          }
        }
        
        public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLResultSet.Row other) {
          if (other == com.relationalcloud.backend.Jdbc.SQLResultSet.Row.getDefaultInstance()) return this;
          if (!other.value_.isEmpty()) {
            if (result.value_.isEmpty()) {
              result.value_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
            }
            result.value_.addAll(other.value_);
          }
          if (!other.nullColumn_.isEmpty()) {
            if (result.nullColumn_.isEmpty()) {
              result.nullColumn_ = new java.util.ArrayList<java.lang.Integer>();
            }
            result.nullColumn_.addAll(other.nullColumn_);
          }
          this.mergeUnknownFields(other.getUnknownFields());
          return this;
        }
        
        public Builder mergeFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          com.google.protobuf.UnknownFieldSet.Builder unknownFields =
            com.google.protobuf.UnknownFieldSet.newBuilder(
              this.getUnknownFields());
          while (true) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                this.setUnknownFields(unknownFields.build());
                return this;
              default: {
                if (!parseUnknownField(input, unknownFields,
                                       extensionRegistry, tag)) {
                  this.setUnknownFields(unknownFields.build());
                  return this;
                }
                break;
              }
              case 10: {
                addValue(input.readBytes());
                break;
              }
              case 16: {
                addNullColumn(input.readInt32());
                break;
              }
              case 18: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                while (input.getBytesUntilLimit() > 0) {
                  addNullColumn(input.readInt32());
                }
                input.popLimit(limit);
                break;
              }
            }
          }
        }
        
        
        // repeated bytes value = 1;
        public java.util.List<com.google.protobuf.ByteString> getValueList() {
          return java.util.Collections.unmodifiableList(result.value_);
        }
        public int getValueCount() {
          return result.getValueCount();
        }
        public com.google.protobuf.ByteString getValue(int index) {
          return result.getValue(index);
        }
        public Builder setValue(int index, com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  result.value_.set(index, value);
          return this;
        }
        public Builder addValue(com.google.protobuf.ByteString value) {
          if (value == null) {
    throw new NullPointerException();
  }
  if (result.value_.isEmpty()) {
            result.value_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
          }
          result.value_.add(value);
          return this;
        }
        public Builder addAllValue(
            java.lang.Iterable<? extends com.google.protobuf.ByteString> values) {
          if (result.value_.isEmpty()) {
            result.value_ = new java.util.ArrayList<com.google.protobuf.ByteString>();
          }
          super.addAll(values, result.value_);
          return this;
        }
        public Builder clearValue() {
          result.value_ = java.util.Collections.emptyList();
          return this;
        }
        
        // repeated int32 null_column = 2;
        public java.util.List<java.lang.Integer> getNullColumnList() {
          return java.util.Collections.unmodifiableList(result.nullColumn_);
        }
        public int getNullColumnCount() {
          return result.getNullColumnCount();
        }
        public int getNullColumn(int index) {
          return result.getNullColumn(index);
        }
        public Builder setNullColumn(int index, int value) {
          result.nullColumn_.set(index, value);
          return this;
        }
        public Builder addNullColumn(int value) {
          if (result.nullColumn_.isEmpty()) {
            result.nullColumn_ = new java.util.ArrayList<java.lang.Integer>();
          }
          result.nullColumn_.add(value);
          return this;
        }
        public Builder addAllNullColumn(
            java.lang.Iterable<? extends java.lang.Integer> values) {
          if (result.nullColumn_.isEmpty()) {
            result.nullColumn_ = new java.util.ArrayList<java.lang.Integer>();
          }
          super.addAll(values, result.nullColumn_);
          return this;
        }
        public Builder clearNullColumn() {
          result.nullColumn_ = java.util.Collections.emptyList();
          return this;
        }
        
        // @@protoc_insertion_point(builder_scope:mysqlengine.SQLResultSet.Row)
      }
      
      static {
        defaultInstance = new Row(true);
        com.relationalcloud.backend.Jdbc.internalForceInit();
        defaultInstance.initFields();
      }
      
      // @@protoc_insertion_point(class_scope:mysqlengine.SQLResultSet.Row)
    }
    
    // repeated .mysqlengine.SQLResultSet.Column column = 1;
    public static final int COLUMN_FIELD_NUMBER = 1;
    private java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Column> column_ =
      java.util.Collections.emptyList();
    public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Column> getColumnList() {
      return column_;
    }
    public int getColumnCount() { return column_.size(); }
    public com.relationalcloud.backend.Jdbc.SQLResultSet.Column getColumn(int index) {
      return column_.get(index);
    }
    
    // repeated .mysqlengine.SQLResultSet.Row row = 2;
    public static final int ROW_FIELD_NUMBER = 2;
    private java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Row> row_ =
      java.util.Collections.emptyList();
    public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Row> getRowList() {
      return row_;
    }
    public int getRowCount() { return row_.size(); }
    public com.relationalcloud.backend.Jdbc.SQLResultSet.Row getRow(int index) {
      return row_.get(index);
    }
    
    // optional int64 affected_rows = 3;
    public static final int AFFECTED_ROWS_FIELD_NUMBER = 3;
    private boolean hasAffectedRows;
    private long affectedRows_ = 0L;
    public boolean hasAffectedRows() { return hasAffectedRows; }
    public long getAffectedRows() { return affectedRows_; }
    
    // optional int64 auto_increment_insert_id = 4;
    public static final int AUTO_INCREMENT_INSERT_ID_FIELD_NUMBER = 4;
    private boolean hasAutoIncrementInsertId;
    private long autoIncrementInsertId_ = 0L;
    public boolean hasAutoIncrementInsertId() { return hasAutoIncrementInsertId; }
    public long getAutoIncrementInsertId() { return autoIncrementInsertId_; }
    
    // optional int32 error_code = 5;
    public static final int ERROR_CODE_FIELD_NUMBER = 5;
    private boolean hasErrorCode;
    private int errorCode_ = 0;
    public boolean hasErrorCode() { return hasErrorCode; }
    public int getErrorCode() { return errorCode_; }
    
    // optional string error_message = 6;
    public static final int ERROR_MESSAGE_FIELD_NUMBER = 6;
    private boolean hasErrorMessage;
    private java.lang.String errorMessage_ = "";
    public boolean hasErrorMessage() { return hasErrorMessage; }
    public java.lang.String getErrorMessage() { return errorMessage_; }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      for (com.relationalcloud.backend.Jdbc.SQLResultSet.Column element : getColumnList()) {
        if (!element.isInitialized()) return false;
      }
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      for (com.relationalcloud.backend.Jdbc.SQLResultSet.Column element : getColumnList()) {
        output.writeMessage(1, element);
      }
      for (com.relationalcloud.backend.Jdbc.SQLResultSet.Row element : getRowList()) {
        output.writeMessage(2, element);
      }
      if (hasAffectedRows()) {
        output.writeInt64(3, getAffectedRows());
      }
      if (hasAutoIncrementInsertId()) {
        output.writeInt64(4, getAutoIncrementInsertId());
      }
      if (hasErrorCode()) {
        output.writeInt32(5, getErrorCode());
      }
      if (hasErrorMessage()) {
        output.writeString(6, getErrorMessage());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      for (com.relationalcloud.backend.Jdbc.SQLResultSet.Column element : getColumnList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, element);
      }
      for (com.relationalcloud.backend.Jdbc.SQLResultSet.Row element : getRowList()) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, element);
      }
      if (hasAffectedRows()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, getAffectedRows());
      }
      if (hasAutoIncrementInsertId()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, getAutoIncrementInsertId());
      }
      if (hasErrorCode()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, getErrorCode());
      }
      if (hasErrorMessage()) {
        size += com.google.protobuf.CodedOutputStream
          .computeStringSize(6, getErrorMessage());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLResultSet parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLResultSet prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLResultSet result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLResultSet.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLResultSet();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLResultSet internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLResultSet();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLResultSet.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLResultSet getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLResultSet.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLResultSet build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLResultSet buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLResultSet buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        if (result.column_ != java.util.Collections.EMPTY_LIST) {
          result.column_ =
            java.util.Collections.unmodifiableList(result.column_);
        }
        if (result.row_ != java.util.Collections.EMPTY_LIST) {
          result.row_ =
            java.util.Collections.unmodifiableList(result.row_);
        }
        com.relationalcloud.backend.Jdbc.SQLResultSet returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLResultSet) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLResultSet)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLResultSet other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLResultSet.getDefaultInstance()) return this;
        if (!other.column_.isEmpty()) {
          if (result.column_.isEmpty()) {
            result.column_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Column>();
          }
          result.column_.addAll(other.column_);
        }
        if (!other.row_.isEmpty()) {
          if (result.row_.isEmpty()) {
            result.row_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Row>();
          }
          result.row_.addAll(other.row_);
        }
        if (other.hasAffectedRows()) {
          setAffectedRows(other.getAffectedRows());
        }
        if (other.hasAutoIncrementInsertId()) {
          setAutoIncrementInsertId(other.getAutoIncrementInsertId());
        }
        if (other.hasErrorCode()) {
          setErrorCode(other.getErrorCode());
        }
        if (other.hasErrorMessage()) {
          setErrorMessage(other.getErrorMessage());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 10: {
              com.relationalcloud.backend.Jdbc.SQLResultSet.Column.Builder subBuilder = com.relationalcloud.backend.Jdbc.SQLResultSet.Column.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addColumn(subBuilder.buildPartial());
              break;
            }
            case 18: {
              com.relationalcloud.backend.Jdbc.SQLResultSet.Row.Builder subBuilder = com.relationalcloud.backend.Jdbc.SQLResultSet.Row.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addRow(subBuilder.buildPartial());
              break;
            }
            case 24: {
              setAffectedRows(input.readInt64());
              break;
            }
            case 32: {
              setAutoIncrementInsertId(input.readInt64());
              break;
            }
            case 40: {
              setErrorCode(input.readInt32());
              break;
            }
            case 50: {
              setErrorMessage(input.readString());
              break;
            }
          }
        }
      }
      
      
      // repeated .mysqlengine.SQLResultSet.Column column = 1;
      public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Column> getColumnList() {
        return java.util.Collections.unmodifiableList(result.column_);
      }
      public int getColumnCount() {
        return result.getColumnCount();
      }
      public com.relationalcloud.backend.Jdbc.SQLResultSet.Column getColumn(int index) {
        return result.getColumn(index);
      }
      public Builder setColumn(int index, com.relationalcloud.backend.Jdbc.SQLResultSet.Column value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.column_.set(index, value);
        return this;
      }
      public Builder setColumn(int index, com.relationalcloud.backend.Jdbc.SQLResultSet.Column.Builder builderForValue) {
        result.column_.set(index, builderForValue.build());
        return this;
      }
      public Builder addColumn(com.relationalcloud.backend.Jdbc.SQLResultSet.Column value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.column_.isEmpty()) {
          result.column_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Column>();
        }
        result.column_.add(value);
        return this;
      }
      public Builder addColumn(com.relationalcloud.backend.Jdbc.SQLResultSet.Column.Builder builderForValue) {
        if (result.column_.isEmpty()) {
          result.column_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Column>();
        }
        result.column_.add(builderForValue.build());
        return this;
      }
      public Builder addAllColumn(
          java.lang.Iterable<? extends com.relationalcloud.backend.Jdbc.SQLResultSet.Column> values) {
        if (result.column_.isEmpty()) {
          result.column_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Column>();
        }
        super.addAll(values, result.column_);
        return this;
      }
      public Builder clearColumn() {
        result.column_ = java.util.Collections.emptyList();
        return this;
      }
      
      // repeated .mysqlengine.SQLResultSet.Row row = 2;
      public java.util.List<com.relationalcloud.backend.Jdbc.SQLResultSet.Row> getRowList() {
        return java.util.Collections.unmodifiableList(result.row_);
      }
      public int getRowCount() {
        return result.getRowCount();
      }
      public com.relationalcloud.backend.Jdbc.SQLResultSet.Row getRow(int index) {
        return result.getRow(index);
      }
      public Builder setRow(int index, com.relationalcloud.backend.Jdbc.SQLResultSet.Row value) {
        if (value == null) {
          throw new NullPointerException();
        }
        result.row_.set(index, value);
        return this;
      }
      public Builder setRow(int index, com.relationalcloud.backend.Jdbc.SQLResultSet.Row.Builder builderForValue) {
        result.row_.set(index, builderForValue.build());
        return this;
      }
      public Builder addRow(com.relationalcloud.backend.Jdbc.SQLResultSet.Row value) {
        if (value == null) {
          throw new NullPointerException();
        }
        if (result.row_.isEmpty()) {
          result.row_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Row>();
        }
        result.row_.add(value);
        return this;
      }
      public Builder addRow(com.relationalcloud.backend.Jdbc.SQLResultSet.Row.Builder builderForValue) {
        if (result.row_.isEmpty()) {
          result.row_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Row>();
        }
        result.row_.add(builderForValue.build());
        return this;
      }
      public Builder addAllRow(
          java.lang.Iterable<? extends com.relationalcloud.backend.Jdbc.SQLResultSet.Row> values) {
        if (result.row_.isEmpty()) {
          result.row_ = new java.util.ArrayList<com.relationalcloud.backend.Jdbc.SQLResultSet.Row>();
        }
        super.addAll(values, result.row_);
        return this;
      }
      public Builder clearRow() {
        result.row_ = java.util.Collections.emptyList();
        return this;
      }
      
      // optional int64 affected_rows = 3;
      public boolean hasAffectedRows() {
        return result.hasAffectedRows();
      }
      public long getAffectedRows() {
        return result.getAffectedRows();
      }
      public Builder setAffectedRows(long value) {
        result.hasAffectedRows = true;
        result.affectedRows_ = value;
        return this;
      }
      public Builder clearAffectedRows() {
        result.hasAffectedRows = false;
        result.affectedRows_ = 0L;
        return this;
      }
      
      // optional int64 auto_increment_insert_id = 4;
      public boolean hasAutoIncrementInsertId() {
        return result.hasAutoIncrementInsertId();
      }
      public long getAutoIncrementInsertId() {
        return result.getAutoIncrementInsertId();
      }
      public Builder setAutoIncrementInsertId(long value) {
        result.hasAutoIncrementInsertId = true;
        result.autoIncrementInsertId_ = value;
        return this;
      }
      public Builder clearAutoIncrementInsertId() {
        result.hasAutoIncrementInsertId = false;
        result.autoIncrementInsertId_ = 0L;
        return this;
      }
      
      // optional int32 error_code = 5;
      public boolean hasErrorCode() {
        return result.hasErrorCode();
      }
      public int getErrorCode() {
        return result.getErrorCode();
      }
      public Builder setErrorCode(int value) {
        result.hasErrorCode = true;
        result.errorCode_ = value;
        return this;
      }
      public Builder clearErrorCode() {
        result.hasErrorCode = false;
        result.errorCode_ = 0;
        return this;
      }
      
      // optional string error_message = 6;
      public boolean hasErrorMessage() {
        return result.hasErrorMessage();
      }
      public java.lang.String getErrorMessage() {
        return result.getErrorMessage();
      }
      public Builder setErrorMessage(java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  result.hasErrorMessage = true;
        result.errorMessage_ = value;
        return this;
      }
      public Builder clearErrorMessage() {
        result.hasErrorMessage = false;
        result.errorMessage_ = getDefaultInstance().getErrorMessage();
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLResultSet)
    }
    
    static {
      defaultInstance = new SQLResultSet(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLResultSet)
  }
  
  public static final class SQLFinish extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLFinish.newBuilder() to construct.
    private SQLFinish() {
      initFields();
    }
    private SQLFinish(boolean noInit) {}
    
    private static final SQLFinish defaultInstance;
    public static SQLFinish getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLFinish getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLFinish_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLFinish_fieldAccessorTable;
    }
    
    // required int32 transaction_id = 1;
    public static final int TRANSACTION_ID_FIELD_NUMBER = 1;
    private boolean hasTransactionId;
    private int transactionId_ = 0;
    public boolean hasTransactionId() { return hasTransactionId; }
    public int getTransactionId() { return transactionId_; }
    
    // required bool commit = 2;
    public static final int COMMIT_FIELD_NUMBER = 2;
    private boolean hasCommit;
    private boolean commit_ = false;
    public boolean hasCommit() { return hasCommit; }
    public boolean getCommit() { return commit_; }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      if (!hasTransactionId) return false;
      if (!hasCommit) return false;
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (hasTransactionId()) {
        output.writeInt32(1, getTransactionId());
      }
      if (hasCommit()) {
        output.writeBool(2, getCommit());
      }
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      if (hasTransactionId()) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, getTransactionId());
      }
      if (hasCommit()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, getCommit());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinish parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLFinish prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLFinish result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLFinish.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLFinish();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLFinish internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLFinish();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLFinish.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLFinish getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLFinish.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLFinish build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLFinish buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLFinish buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.relationalcloud.backend.Jdbc.SQLFinish returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLFinish) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLFinish)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLFinish other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLFinish.getDefaultInstance()) return this;
        if (other.hasTransactionId()) {
          setTransactionId(other.getTransactionId());
        }
        if (other.hasCommit()) {
          setCommit(other.getCommit());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
            case 8: {
              setTransactionId(input.readInt32());
              break;
            }
            case 16: {
              setCommit(input.readBool());
              break;
            }
          }
        }
      }
      
      
      // required int32 transaction_id = 1;
      public boolean hasTransactionId() {
        return result.hasTransactionId();
      }
      public int getTransactionId() {
        return result.getTransactionId();
      }
      public Builder setTransactionId(int value) {
        result.hasTransactionId = true;
        result.transactionId_ = value;
        return this;
      }
      public Builder clearTransactionId() {
        result.hasTransactionId = false;
        result.transactionId_ = 0;
        return this;
      }
      
      // required bool commit = 2;
      public boolean hasCommit() {
        return result.hasCommit();
      }
      public boolean getCommit() {
        return result.getCommit();
      }
      public Builder setCommit(boolean value) {
        result.hasCommit = true;
        result.commit_ = value;
        return this;
      }
      public Builder clearCommit() {
        result.hasCommit = false;
        result.commit_ = false;
        return this;
      }
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLFinish)
    }
    
    static {
      defaultInstance = new SQLFinish(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLFinish)
  }
  
  public static final class SQLFinishResult extends
      com.google.protobuf.GeneratedMessage {
    // Use SQLFinishResult.newBuilder() to construct.
    private SQLFinishResult() {
      initFields();
    }
    private SQLFinishResult(boolean noInit) {}
    
    private static final SQLFinishResult defaultInstance;
    public static SQLFinishResult getDefaultInstance() {
      return defaultInstance;
    }
    
    public SQLFinishResult getDefaultInstanceForType() {
      return defaultInstance;
    }
    
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLFinishResult_descriptor;
    }
    
    protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.relationalcloud.backend.Jdbc.internal_static_mysqlengine_SQLFinishResult_fieldAccessorTable;
    }
    
    private void initFields() {
    }
    public final boolean isInitialized() {
      return true;
    }
    
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      getUnknownFields().writeTo(output);
    }
    
    private int memoizedSerializedSize = -1;
    public int getSerializedSize() {
      int size = memoizedSerializedSize;
      if (size != -1) return size;
    
      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSerializedSize = size;
      return size;
    }
    
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return newBuilder().mergeFrom(data, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      Builder builder = newBuilder();
      if (builder.mergeDelimitedFrom(input, extensionRegistry)) {
        return builder.buildParsed();
      } else {
        return null;
      }
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input).buildParsed();
    }
    public static com.relationalcloud.backend.Jdbc.SQLFinishResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return newBuilder().mergeFrom(input, extensionRegistry)
               .buildParsed();
    }
    
    public static Builder newBuilder() { return Builder.create(); }
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder(com.relationalcloud.backend.Jdbc.SQLFinishResult prototype) {
      return newBuilder().mergeFrom(prototype);
    }
    public Builder toBuilder() { return newBuilder(this); }
    
    public static final class Builder extends
        com.google.protobuf.GeneratedMessage.Builder<Builder> {
      private com.relationalcloud.backend.Jdbc.SQLFinishResult result;
      
      // Construct using com.relationalcloud.backend.Jdbc.SQLFinishResult.newBuilder()
      private Builder() {}
      
      private static Builder create() {
        Builder builder = new Builder();
        builder.result = new com.relationalcloud.backend.Jdbc.SQLFinishResult();
        return builder;
      }
      
      protected com.relationalcloud.backend.Jdbc.SQLFinishResult internalGetResult() {
        return result;
      }
      
      public Builder clear() {
        if (result == null) {
          throw new IllegalStateException(
            "Cannot call clear() after build().");
        }
        result = new com.relationalcloud.backend.Jdbc.SQLFinishResult();
        return this;
      }
      
      public Builder clone() {
        return create().mergeFrom(result);
      }
      
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.relationalcloud.backend.Jdbc.SQLFinishResult.getDescriptor();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLFinishResult getDefaultInstanceForType() {
        return com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance();
      }
      
      public boolean isInitialized() {
        return result.isInitialized();
      }
      public com.relationalcloud.backend.Jdbc.SQLFinishResult build() {
        if (result != null && !isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return buildPartial();
      }
      
      private com.relationalcloud.backend.Jdbc.SQLFinishResult buildParsed()
          throws com.google.protobuf.InvalidProtocolBufferException {
        if (!isInitialized()) {
          throw newUninitializedMessageException(
            result).asInvalidProtocolBufferException();
        }
        return buildPartial();
      }
      
      public com.relationalcloud.backend.Jdbc.SQLFinishResult buildPartial() {
        if (result == null) {
          throw new IllegalStateException(
            "build() has already been called on this Builder.");
        }
        com.relationalcloud.backend.Jdbc.SQLFinishResult returnMe = result;
        result = null;
        return returnMe;
      }
      
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.relationalcloud.backend.Jdbc.SQLFinishResult) {
          return mergeFrom((com.relationalcloud.backend.Jdbc.SQLFinishResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }
      
      public Builder mergeFrom(com.relationalcloud.backend.Jdbc.SQLFinishResult other) {
        if (other == com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }
      
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                return this;
              }
              break;
            }
          }
        }
      }
      
      
      // @@protoc_insertion_point(builder_scope:mysqlengine.SQLFinishResult)
    }
    
    static {
      defaultInstance = new SQLFinishResult(true);
      com.relationalcloud.backend.Jdbc.internalForceInit();
      defaultInstance.initFields();
    }
    
    // @@protoc_insertion_point(class_scope:mysqlengine.SQLFinishResult)
  }
  
  public static abstract class SQLConnection
      implements com.google.protobuf.Service {
    protected SQLConnection() {}
    
    public interface Interface {
      public abstract void execute(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLTransactionFragment request,
          com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLBatchResults> done);
      
      public abstract void finish(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLFinish request,
          com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLFinishResult> done);
      
    }
    
    public static com.google.protobuf.Service newReflectiveService(
        final Interface impl) {
      return new SQLConnection() {
        @Override
        public  void execute(
            com.google.protobuf.RpcController controller,
            com.relationalcloud.backend.Jdbc.SQLTransactionFragment request,
            com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLBatchResults> done) {
          impl.execute(controller, request, done);
        }
        
        @Override
        public  void finish(
            com.google.protobuf.RpcController controller,
            com.relationalcloud.backend.Jdbc.SQLFinish request,
            com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLFinishResult> done) {
          impl.finish(controller, request, done);
        }
        
      };
    }
    
    public static com.google.protobuf.BlockingService
        newReflectiveBlockingService(final BlockingInterface impl) {
      return new com.google.protobuf.BlockingService() {
        public final com.google.protobuf.Descriptors.ServiceDescriptor
            getDescriptorForType() {
          return getDescriptor();
        }
        
        public final com.google.protobuf.Message callBlockingMethod(
            com.google.protobuf.Descriptors.MethodDescriptor method,
            com.google.protobuf.RpcController controller,
            com.google.protobuf.Message request)
            throws com.google.protobuf.ServiceException {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.callBlockingMethod() given method descriptor for " +
              "wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return impl.execute(controller, (com.relationalcloud.backend.Jdbc.SQLTransactionFragment)request);
            case 1:
              return impl.finish(controller, (com.relationalcloud.backend.Jdbc.SQLFinish)request);
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }
        
        public final com.google.protobuf.Message
            getRequestPrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getRequestPrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return com.relationalcloud.backend.Jdbc.SQLTransactionFragment.getDefaultInstance();
            case 1:
              return com.relationalcloud.backend.Jdbc.SQLFinish.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }
        
        public final com.google.protobuf.Message
            getResponsePrototype(
            com.google.protobuf.Descriptors.MethodDescriptor method) {
          if (method.getService() != getDescriptor()) {
            throw new java.lang.IllegalArgumentException(
              "Service.getResponsePrototype() given method " +
              "descriptor for wrong service type.");
          }
          switch(method.getIndex()) {
            case 0:
              return com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance();
            case 1:
              return com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance();
            default:
              throw new java.lang.AssertionError("Can't get here.");
          }
        }
        
      };
    }
    
    public abstract void execute(
        com.google.protobuf.RpcController controller,
        com.relationalcloud.backend.Jdbc.SQLTransactionFragment request,
        com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLBatchResults> done);
    
    public abstract void finish(
        com.google.protobuf.RpcController controller,
        com.relationalcloud.backend.Jdbc.SQLFinish request,
        com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLFinishResult> done);
    
    public static final
        com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptor() {
      return com.relationalcloud.backend.Jdbc.getDescriptor().getServices().get(0);
    }
    public final com.google.protobuf.Descriptors.ServiceDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    
    public final void callMethod(
        com.google.protobuf.Descriptors.MethodDescriptor method,
        com.google.protobuf.RpcController controller,
        com.google.protobuf.Message request,
        com.google.protobuf.RpcCallback<
          com.google.protobuf.Message> done) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.callMethod() given method descriptor for wrong " +
          "service type.");
      }
      switch(method.getIndex()) {
        case 0:
          this.execute(controller, (com.relationalcloud.backend.Jdbc.SQLTransactionFragment)request,
            com.google.protobuf.RpcUtil.<com.relationalcloud.backend.Jdbc.SQLBatchResults>specializeCallback(
              done));
          return;
        case 1:
          this.finish(controller, (com.relationalcloud.backend.Jdbc.SQLFinish)request,
            com.google.protobuf.RpcUtil.<com.relationalcloud.backend.Jdbc.SQLFinishResult>specializeCallback(
              done));
          return;
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }
    
    public final com.google.protobuf.Message
        getRequestPrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getRequestPrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return com.relationalcloud.backend.Jdbc.SQLTransactionFragment.getDefaultInstance();
        case 1:
          return com.relationalcloud.backend.Jdbc.SQLFinish.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }
    
    public final com.google.protobuf.Message
        getResponsePrototype(
        com.google.protobuf.Descriptors.MethodDescriptor method) {
      if (method.getService() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "Service.getResponsePrototype() given method " +
          "descriptor for wrong service type.");
      }
      switch(method.getIndex()) {
        case 0:
          return com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance();
        case 1:
          return com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance();
        default:
          throw new java.lang.AssertionError("Can't get here.");
      }
    }
    
    public static Stub newStub(
        com.google.protobuf.RpcChannel channel) {
      return new Stub(channel);
    }
    
    public static final class Stub extends com.relationalcloud.backend.Jdbc.SQLConnection implements Interface {
      private Stub(com.google.protobuf.RpcChannel channel) {
        this.channel = channel;
      }
      
      private final com.google.protobuf.RpcChannel channel;
      
      public com.google.protobuf.RpcChannel getChannel() {
        return channel;
      }
      
      public  void execute(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLTransactionFragment request,
          com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLBatchResults> done) {
        channel.callMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            com.relationalcloud.backend.Jdbc.SQLBatchResults.class,
            com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance()));
      }
      
      public  void finish(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLFinish request,
          com.google.protobuf.RpcCallback<com.relationalcloud.backend.Jdbc.SQLFinishResult> done) {
        channel.callMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance(),
          com.google.protobuf.RpcUtil.generalizeCallback(
            done,
            com.relationalcloud.backend.Jdbc.SQLFinishResult.class,
            com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance()));
      }
    }
    
    public static BlockingInterface newBlockingStub(
        com.google.protobuf.BlockingRpcChannel channel) {
      return new BlockingStub(channel);
    }
    
    public interface BlockingInterface {
      public com.relationalcloud.backend.Jdbc.SQLBatchResults execute(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLTransactionFragment request)
          throws com.google.protobuf.ServiceException;
      
      public com.relationalcloud.backend.Jdbc.SQLFinishResult finish(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLFinish request)
          throws com.google.protobuf.ServiceException;
    }
    
    private static final class BlockingStub implements BlockingInterface {
      private BlockingStub(com.google.protobuf.BlockingRpcChannel channel) {
        this.channel = channel;
      }
      
      private final com.google.protobuf.BlockingRpcChannel channel;
      
      public com.relationalcloud.backend.Jdbc.SQLBatchResults execute(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLTransactionFragment request)
          throws com.google.protobuf.ServiceException {
        return (com.relationalcloud.backend.Jdbc.SQLBatchResults) channel.callBlockingMethod(
          getDescriptor().getMethods().get(0),
          controller,
          request,
          com.relationalcloud.backend.Jdbc.SQLBatchResults.getDefaultInstance());
      }
      
      
      public com.relationalcloud.backend.Jdbc.SQLFinishResult finish(
          com.google.protobuf.RpcController controller,
          com.relationalcloud.backend.Jdbc.SQLFinish request)
          throws com.google.protobuf.ServiceException {
        return (com.relationalcloud.backend.Jdbc.SQLFinishResult) channel.callBlockingMethod(
          getDescriptor().getMethods().get(1),
          controller,
          request,
          com.relationalcloud.backend.Jdbc.SQLFinishResult.getDefaultInstance());
      }
      
    }
  }
  
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLBatch_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLBatch_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLTransactionFragment_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLTransactionFragment_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLBatchResults_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLBatchResults_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_Statement_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_Statement_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_Statement_MigrateStatement_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_Statement_MigrateStatement_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_Argument_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_Argument_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLResultSet_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLResultSet_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLResultSet_Column_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLResultSet_Column_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLResultSet_Row_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLResultSet_Row_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLFinish_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLFinish_fieldAccessorTable;
  private static com.google.protobuf.Descriptors.Descriptor
    internal_static_mysqlengine_SQLFinishResult_descriptor;
  private static
    com.google.protobuf.GeneratedMessage.FieldAccessorTable
      internal_static_mysqlengine_SQLFinishResult_fieldAccessorTable;
  
  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\026mysqlengine/jdbc.proto\022\013mysqlengine\"5\n" +
      "\010SQLBatch\022)\n\tstatement\030\001 \003(\0132\026.mysqlengi" +
      "ne.Statement\"\211\001\n\026SQLTransactionFragment\022" +
      "\026\n\016transaction_id\030\001 \002(\005\022\032\n\013auto_commit\030\002" +
      " \001(\010:\005false\022\025\n\rdatabase_name\030\003 \001(\t\022$\n\005ba" +
      "tch\030\004 \002(\0132\025.mysqlengine.SQLBatch\"<\n\017SQLB" +
      "atchResults\022)\n\006result\030\001 \003(\0132\031.mysqlengin" +
      "e.SQLResultSet\"\237\001\n\tStatement\022\013\n\003sql\030\001 \002(" +
      "\t\022B\n\021migrate_statement\030\002 \003(\0132\'.mysqlengi" +
      "ne.Statement.MigrateStatement\032A\n\020Migrate",
      "Statement\022\022\n\nimport_sql\030\001 \002(\t\022\031\n\021destina" +
      "tion_table\030\002 \002(\t\"\206\001\n\010Argument\022\014\n\004type\030\001 " +
      "\002(\005\022\020\n\010int32Val\030\002 \001(\005\022\020\n\010int64Val\030\003 \001(\003\022" +
      "\020\n\010floatVal\030\004 \001(\002\022\021\n\tdoubleVal\030\005 \001(\001\022\021\n\t" +
      "stringVal\030\006 \001(\t\022\020\n\010bytesVal\030\007 \001(\014\"\350\002\n\014SQ" +
      "LResultSet\0220\n\006column\030\001 \003(\0132 .mysqlengine" +
      ".SQLResultSet.Column\022*\n\003row\030\002 \003(\0132\035.mysq" +
      "lengine.SQLResultSet.Row\022\025\n\raffected_row" +
      "s\030\003 \001(\003\022 \n\030auto_increment_insert_id\030\004 \001(" +
      "\003\022\022\n\nerror_code\030\005 \001(\005\022\025\n\rerror_message\030\006",
      " \001(\t\032J\n\006Column\022\022\n\nquery_name\030\001 \002(\t\022,\n\004ty" +
      "pe\030\002 \002(\0162\036.mysqlengine.SQLResultSet.Type" +
      "\032)\n\003Row\022\r\n\005value\030\001 \003(\014\022\023\n\013null_column\030\002 " +
      "\003(\005\"\037\n\004Type\022\013\n\007INTEGER\020\000\022\n\n\006STRING\020\001\"3\n\t" +
      "SQLFinish\022\026\n\016transaction_id\030\001 \002(\005\022\016\n\006com" +
      "mit\030\002 \002(\010\"\021\n\017SQLFinishResult*2\n\tErrorCod" +
      "e\022\r\n\010DEADLOCK\020\275\t\022\026\n\021LOCK_WAIT_TIMEOUT\020\265\t" +
      "2\235\001\n\rSQLConnection\022L\n\007Execute\022#.mysqleng" +
      "ine.SQLTransactionFragment\032\034.mysqlengine" +
      ".SQLBatchResults\022>\n\006Finish\022\026.mysqlengine",
      ".SQLFinish\032\034.mysqlengine.SQLFinishResult" +
      "B\035\n\033com.relationalcloud.backend"
    };
    com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
      new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
        public com.google.protobuf.ExtensionRegistry assignDescriptors(
            com.google.protobuf.Descriptors.FileDescriptor root) {
          descriptor = root;
          internal_static_mysqlengine_SQLBatch_descriptor =
            getDescriptor().getMessageTypes().get(0);
          internal_static_mysqlengine_SQLBatch_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLBatch_descriptor,
              new java.lang.String[] { "Statement", },
              com.relationalcloud.backend.Jdbc.SQLBatch.class,
              com.relationalcloud.backend.Jdbc.SQLBatch.Builder.class);
          internal_static_mysqlengine_SQLTransactionFragment_descriptor =
            getDescriptor().getMessageTypes().get(1);
          internal_static_mysqlengine_SQLTransactionFragment_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLTransactionFragment_descriptor,
              new java.lang.String[] { "TransactionId", "AutoCommit", "DatabaseName", "Batch", },
              com.relationalcloud.backend.Jdbc.SQLTransactionFragment.class,
              com.relationalcloud.backend.Jdbc.SQLTransactionFragment.Builder.class);
          internal_static_mysqlengine_SQLBatchResults_descriptor =
            getDescriptor().getMessageTypes().get(2);
          internal_static_mysqlengine_SQLBatchResults_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLBatchResults_descriptor,
              new java.lang.String[] { "Result", },
              com.relationalcloud.backend.Jdbc.SQLBatchResults.class,
              com.relationalcloud.backend.Jdbc.SQLBatchResults.Builder.class);
          internal_static_mysqlengine_Statement_descriptor =
            getDescriptor().getMessageTypes().get(3);
          internal_static_mysqlengine_Statement_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_Statement_descriptor,
              new java.lang.String[] { "Sql", "MigrateStatement", },
              com.relationalcloud.backend.Jdbc.Statement.class,
              com.relationalcloud.backend.Jdbc.Statement.Builder.class);
          internal_static_mysqlengine_Statement_MigrateStatement_descriptor =
            internal_static_mysqlengine_Statement_descriptor.getNestedTypes().get(0);
          internal_static_mysqlengine_Statement_MigrateStatement_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_Statement_MigrateStatement_descriptor,
              new java.lang.String[] { "ImportSql", "DestinationTable", },
              com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.class,
              com.relationalcloud.backend.Jdbc.Statement.MigrateStatement.Builder.class);
          internal_static_mysqlengine_Argument_descriptor =
            getDescriptor().getMessageTypes().get(4);
          internal_static_mysqlengine_Argument_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_Argument_descriptor,
              new java.lang.String[] { "Type", "Int32Val", "Int64Val", "FloatVal", "DoubleVal", "StringVal", "BytesVal", },
              com.relationalcloud.backend.Jdbc.Argument.class,
              com.relationalcloud.backend.Jdbc.Argument.Builder.class);
          internal_static_mysqlengine_SQLResultSet_descriptor =
            getDescriptor().getMessageTypes().get(5);
          internal_static_mysqlengine_SQLResultSet_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLResultSet_descriptor,
              new java.lang.String[] { "Column", "Row", "AffectedRows", "AutoIncrementInsertId", "ErrorCode", "ErrorMessage", },
              com.relationalcloud.backend.Jdbc.SQLResultSet.class,
              com.relationalcloud.backend.Jdbc.SQLResultSet.Builder.class);
          internal_static_mysqlengine_SQLResultSet_Column_descriptor =
            internal_static_mysqlengine_SQLResultSet_descriptor.getNestedTypes().get(0);
          internal_static_mysqlengine_SQLResultSet_Column_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLResultSet_Column_descriptor,
              new java.lang.String[] { "QueryName", "Type", },
              com.relationalcloud.backend.Jdbc.SQLResultSet.Column.class,
              com.relationalcloud.backend.Jdbc.SQLResultSet.Column.Builder.class);
          internal_static_mysqlengine_SQLResultSet_Row_descriptor =
            internal_static_mysqlengine_SQLResultSet_descriptor.getNestedTypes().get(1);
          internal_static_mysqlengine_SQLResultSet_Row_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLResultSet_Row_descriptor,
              new java.lang.String[] { "Value", "NullColumn", },
              com.relationalcloud.backend.Jdbc.SQLResultSet.Row.class,
              com.relationalcloud.backend.Jdbc.SQLResultSet.Row.Builder.class);
          internal_static_mysqlengine_SQLFinish_descriptor =
            getDescriptor().getMessageTypes().get(6);
          internal_static_mysqlengine_SQLFinish_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLFinish_descriptor,
              new java.lang.String[] { "TransactionId", "Commit", },
              com.relationalcloud.backend.Jdbc.SQLFinish.class,
              com.relationalcloud.backend.Jdbc.SQLFinish.Builder.class);
          internal_static_mysqlengine_SQLFinishResult_descriptor =
            getDescriptor().getMessageTypes().get(7);
          internal_static_mysqlengine_SQLFinishResult_fieldAccessorTable = new
            com.google.protobuf.GeneratedMessage.FieldAccessorTable(
              internal_static_mysqlengine_SQLFinishResult_descriptor,
              new java.lang.String[] { },
              com.relationalcloud.backend.Jdbc.SQLFinishResult.class,
              com.relationalcloud.backend.Jdbc.SQLFinishResult.Builder.class);
          return null;
        }
      };
    com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        }, assigner);
  }
  
  public static void internalForceInit() {}
  
  // @@protoc_insertion_point(outer_class_scope)
}
